package br.com.gaspar.academia.util;


import java.util.HashMap;
import java.util.Map;

import javax.faces.component.UIComponent;
import javax.faces.context.FacesContext;
import javax.faces.convert.Converter;
import javax.faces.convert.FacesConverter;

import br.com.gaspar.utils.entidade.EntidadeBase;

@FacesConverter(value="entidadeConverter", forClass=EntidadeBase.class)
public class EntidadeBaseConverter implements Converter {
	
	private static Map<String, EntidadeBase> cache = new HashMap<String, EntidadeBase>();   
	
	@Override   
	public Object getAsObject(FacesContext facesContext, UIComponent componenteJSF, String idCache) {   
		EntidadeBase obj = null;
		if (idCache != null) {
			  obj = cache.get(idCache);
		}   
	    return obj;
	}   

	@Override   
	public String getAsString(FacesContext facesContext, UIComponent componenteJSF, Object entidade) {   
		if(entidade == null){
			return "0";
		}
		EntidadeBase entidadeBase = (EntidadeBase) entidade;   
        Long id = entidadeBase.getId();
        String nomeClasse = entidadeBase.getClass().getSimpleName();
        String idCache = nomeClasse + id;
        if (id != null) {
        	if( !cache.containsKey(idCache)){
        		cache.put(idCache, entidadeBase);
        	}
            return idCache;   
        } else {   
            return "0";   
        }      
	}   
}

